import React, { useState, useEffect } from 'react'

function dateTransform(seconds) {
  let [day, hour, minute, second] = [0, 0, 0, 0] // 初始化
  if (seconds > 0) {
    day = Math.floor(seconds / (60 * 60 * 24))
    hour = Math.floor(seconds / (60 * 60)) - day * 24
    minute = Math.floor(seconds / 60) - day * 24 * 60 - hour * 60
    second =
      Math.floor(seconds) - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60
  }
  // 小于10的，在前面加0

  hour = hour < 10 ? '0' + hour : hour
  minute = minute < 10 ? '0' + minute : minute
  second = second < 10 ? '0' + second : second
  return [hour, minute, second]
}

// 自定义 Hook 的名称必须以 use 开头
function useCountdown(initialTime) {
  // 使用 useState Hook 来创建一个时间和一个更新时间的函数
  const [time, setTime] = useState(initialTime)

  // 使用 useState Hook 来创建一个状态和一个更新状态的函数

  // 使用 useEffect Hook 来实现倒计时的逻辑
  useEffect(() => {
    // 如果状态为运行并且时间大于零
    if (time > 0) {
      // 设置一个定时器，每隔一秒更新一次时间
      const timerId = setTimeout(() => {
        setTime(time - 1)
      }, 1000)
      // 返回一个清理函数，用于取消定时器
      return () => {
        clearTimeout(timerId)
      }
    }
  }, [time]) // 依赖于状态和时间

  // 返回时间和控制函数
  return dateTransform(time)
}

const getdateNoTime = (timestamp: number) => {
  const date = new Date(timestamp)
  const month = (date.getMonth() + 1 < 10 ? '0' : '') + (date.getMonth() + 1)
  const day = (date.getDate() < 10 ? '0' : '') + date.getDate()
  const hours = (date.getHours() < 10 ? '0' : '') + date.getHours()
  const minutes = (date.getMinutes() < 10 ? '0' : '') + date.getMinutes()

  return `${month}.${day} ${hours}:${minutes}`
}

export { getdateNoTime, useCountdown }
